package Test.test4.exam2;

import java.io.File;
import java.io.IOException;

public class exam2 {
    public static void main(String args[]) {
        File flie = new File("D:\\a\\b\\c\\d\\e\\f");
        flie.mkdirs();//首先创建多个目录
        System.out.println("目录创建成功");
        File file2 = new File("D:\\a\\a.txt");//创建文件
        File file3 = new File("D:\\a\\a.avi");//创建文件
        File file5 = new File("D:\\a");//拷贝文件原路径
        File file6 = new File("D:\\b");//拷贝文件路径
        try {
            file2.createNewFile();//创建文件
            System.out.println(file2.getName() + "创建成功");
            file3.createNewFile();//创建文件
            System.out.println(file3.getName() + "创建成功");
            System.out.println(file3.getAbsolutePath());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            copy(file5, file6);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       del(new File("D:\\a"));//删除文件夹及子目录文件

    }

    private static void copy(File file1, File file2) throws IOException {//拷贝文件夹
        File[] files = file1.listFiles();//遍历源文件夹文件
        if (!file2.exists()) {//如果拷贝路径不存在,就创建文件夹
            file2.mkdirs();
        }
        if (!"a".equals(file1.getName())) {//判断拷贝源是否为根目录,如果不是,就位拷贝文件夹创建新的子文件夹
            file2 = new File(file2, file1.getName());////创建根目录
            file2.mkdirs();
        }
        for (File file : files) {
            if (file.isFile()) {//如果是文件直接复制
                new copyThread(file, file2).start();//启动复制文件线程
            } else if (file.isDirectory()) {//如果是文件夹就递归
                copy(file, file2);
            }

        }

    }

    private static void del(File file) {
        File[] files = file.listFiles();//遍历要删除的文件
        for (File file1 : files) {//首先清空文件夹及子文件夹下的所有文件
            if (file1.exists()) {
                if (file1.isFile()) {//是文件直接删除
                    file1.delete();
                } else if (file1.isDirectory()) {//文件夹就进行递归
                    del(file1);
                }

            }

        }
        File[] filess = file.listFiles();
        for (File file1 : filess) {//删除所有子文件夹
            if (file1.exists()) {
                file1.delete();
            }

        }
    }


}
